# 配置全局用户名
git config --global user.name "zixinhai"

# 配置全局邮箱
git config --global user.email "1484355301@qq.com"

# 查看配置
git config --list

mkdir jdzb
cd jdzb
git init 
touch README.md

# 添加一个文件到暂存区（git三级缓存：暂存区-本地仓库-远程仓库）
# 没有添加到暂存区的文件的状态为Unstaged未受控
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/zixinhai/jdzb.git
git push -u origin "master"

# 将所有未受控文件添加到暂存区
git add .

# 将暂存区中的所有内容提交本地仓库（此时正式形成一个版本 Added->Modified[本地已修改/还未推送远程]
git commit -m "添加gitcmd.sh"
# 将master分支（默认分支）推送远程仓库
git push -u origin master
# 查看本地仓库状态
git status


# =============================================
# (基于当前分支）创建dev分支
git branch dev
# 创建切换二合一
git checkout -b dev
# 切回特性分支
git checkout feature-page
# =============================================

# =============================================
# 准备添加新的开发者
# 新成员生成SSH秘钥
ssh-keygen -t ed25519 -C "xxxxxxxxx@xx.com"
# 拷贝生成的秘钥内容 地址和文件名要使用你的具体的配置
type C:\Users\♥\.ssh\id_ed25519.pub
# 克隆工程到本地
git clone git@gitee.com:steveouyang/jdzb.git
# 显示当前工程的remote信息
git remote -v
# 修改后再推送远程,这是全局的
git config --global user.name "ziji"
# 这是局部的
git config user.name "ziji"
git add .
git commit -m "自己的提交"

# 查看提交日志
git log
# =============================================



# =============================================
# 查看当前分支
git branch
# （基于当前分支）创建分支，用于构建静态页面
git branch feature-page
# 切换到指定分支
git checkout feature-page
# 提交分支内容
git add .
git commit -m "初步构建工程结构"
git push -u origin feature-page
# =============================================



# =============================================
# 将自己合并回dev分支
# 合并其他分支到当前分支
# 先将dev分支合并到当前的特性分支（如果有冲突，让他爆发在特性分支上）
git merge dev
# 解决冲突
# 经过充分的友好交流（非暴力那种）同一内容后，删除冲突标记后，重新提交
git add . 
git commit -m "解决了与dev的冲突"
git merge dev
# 用dev合并解决了冲突的特性分支
git checkout dev
git merge feature-page
# 删除已经彻底用完的分支
git branch -d feature-page
# =============================================


# =============================================
# 拉取远程仓库的内容到本地仓库（而非工作目录）
git fetch origin
git checkout -b dev
git merge origin/dev
git log
git reset --hard 0dc433bc3a9dc
# =============================================


# =============================================
git remote remove origin 
# 重新配置自己的源
git remote add 你自己的源地址
# 更好的选择是：喜欢哪个项目，直接【fork】一份到自己的账号下
# =============================================


# =============================================
# 配置新的源地址
git remote remove origin 
git remote add origin 新的源地址
# 切换新源后无论推拉皆不能成功（报错中会建议你git pull）
git push -u origin dev
# 先拉一下（隐性的关联行为）当然照样还是无法成功（...unrelated histories）
git pull origin dev 
# 再次拉一下，参数中允许一下【无关联的历史记录】
git pull origin dev --allow-unrelated-histories
# 最后再重新推送即可
git push -u origin dev 
# =============================================


# =============================================
# 演示掉坑
# 故意把源配错
# 先将好的源给她故意移除掉
git remote remove origin
# 查看当前源（当然没有任何源）
git remote -v
# 故意配置一个错误的源
git remote add origin nimei
# 配置一个正确的源
git remote remove origin
git remote add origin https://gitee.com/zixinhai/jdzb.git
# =============================================





# =============================================
git branch feature-data
git checkout feature-data